// pages/address/address.js
const addressApi = require('../../api/address');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 地址列表
    addressList: [],
    // 是否从订单页面跳转过来
    fromOrder: false,
    // 是否正在加载数据
    loading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 判断是否从订单页面跳转过来
    if (options.from === 'order') {
      this.setData({
        fromOrder: true
      });
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 获取地址列表
    this.getAddressList();
  },

  // 获取地址列表
  getAddressList() {
    // 设置加载状态
    this.setData({ loading: true });
    
    // 调用API获取数据
    addressApi.getAddressList().then(res => {
      // 无论成功失败，都结束加载状态
      this.setData({ loading: false });
      
      if (res.code === 1) {
        // 处理返回的地址列表数据
        const addressList = Array.isArray(res.data) ? res.data : (res.data ? [res.data] : []);
        
        // 格式化地址数据，确保字段名称一致
        const formattedList = addressList.map(item => ({
          id: item.id,
          name: item.consignee,
          phone: item.phone,
          address: `${item.provinceName || ''}${item.cityName || ''}${item.districtName || ''} ${item.detail || ''}`,
          tag: item.label,
          isDefault: item.isDefault === 1
        }));
        
        this.setData({
          addressList: formattedList
        });
      } else {
        wx.showToast({
          title: res.msg || '获取地址列表失败',
          icon: 'none'
        });
      }
    }).catch(err => {
      // 发生错误时，结束加载状态
      this.setData({ loading: false });
      
      console.error('获取地址列表失败:', err);
      wx.showToast({
        title: '获取地址列表失败',
        icon: 'none'
      });
    });
  },

  // 选择地址（从订单页面跳转过来时使用）
  selectAddress(e) {
    if (!this.data.fromOrder) return;
    
    const id = e.currentTarget.dataset.id;
    const address = this.data.addressList.find(item => item.id === id);
    
    // 将选中的地址传回订单页面
    const pages = getCurrentPages();
    const prevPage = pages[pages.length - 2];
    
    prevPage.setData({
      selectedAddress: address
    });
    
    wx.navigateBack();
  },

  // 设置默认地址
  setDefault(e) {
    const id = e.currentTarget.dataset.id;
    
    // 调用API设置默认地址
    addressApi.setDefaultAddress(id).then(res => {
      if (res.code === 1) {
        // 重新获取地址列表
        this.getAddressList();
        
        wx.showToast({
          title: '设置成功',
          icon: 'success'
        });
      } else {
        wx.showToast({
          title: res.msg || '设置默认地址失败',
          icon: 'none'
        });
      }
    }).catch(err => {
      console.error('设置默认地址失败:', err);
      wx.showToast({
        title: '设置默认地址失败',
        icon: 'none'
      });
    });
  },

  // 编辑地址
  editAddress(e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/addressEdit/addressEdit?id=${id}`
    });
  },

  // 新增地址
  addAddress() {
    wx.navigateTo({
      url: '/pages/addressEdit/addressEdit'
    });
  },
  
  // 添加返回按钮功能
  goBack() {
    wx.navigateBack();
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})